//普通内部类
//注:普通内部类在实际开发中很少用到
package object4.package8;
//最普通的，把类直接写到 文件 中的，可以称为外部类
public class Test {
    //类里面可以有属性和方法
    private int n = 20;

    public void printN(){
        System.out.println(n);
    }

    //这就是一个普通的内部类
    //普通内部类创建实例,是依赖外部类的this引用的
    //内部类前面是不能写public的
    class Inner{
        private int m = 10;

        public void printM(){
            System.out.println(m);
            System.out.println(n);
            //内部类可以访问外部类的属性
        }
    }

    public void func(){
        Inner inner = new Inner();
        inner.printM();
    }

    public static void func2(){
        //在外部类的方法中使用内部类,不用加Test,如果是其他类就需要了
        //由于是静态方法,所以没有this,就无法创建内部类的实例了
//        Inner inner = new Inner();
    }

    public static void main(String[] args) {
        //创建内部类的实例
//        Test.Inner inner = new Test.Inner();
        //此处这样写会报错,原因是static方法中没有外部类的ths

        //要再创建一个func,就可以正常打印了
        Test test = new Test();
        test.func();
    }
}
